package br.com.velp.sudecap.entidade;

import java.util.Date;
import javax.persistence.*;

/**
 * <sumario>
 * <objetivo> "Rastreabilidade" </objetivo>
 * <autor> EDUARDO SANTOS DE OLIVEIRA </autor>
 * <versao>1.0.0.0</versao>
 * <data_criacao> 17.10.2012 </data_criacao>
 * <data_ultima_alteracao> N/A </data_ultima_alteracao>
 * <requisitos_afetados> RF008.01 - Listar Cartórios / RF008.02 - Cadastrar Cartorio </requisitos_afetados>
 * <descricao> Bean Responsável Pelo Mapeamento da Tabela CARTORIO </descricao>
 * </sumario>
 */
@Entity
@Table(name = "Cartorio")
public class Cartorio extends EntityBase {

    public static final Long serialVersionUID = 1L;
    
    @Id
    @SequenceGenerator(name = "SQ_ID_CART", sequenceName = "SQ_ID_CART", allocationSize = 1)
    @GeneratedValue(generator = "SQ_ID_CART")
    @Column(name = "id_Cartorio", nullable = false, unique = true)
    private Long id;
    @Column(name = "Nome", length = 120, nullable = false)
    private String nome;
    @Column(name = "Endereco", length = 100)
    private String endereco;
    @Column(name = "Bairro", length = 60)
    private String bairro;
    @Column(name = "Contato", length = 60)
    private String contato;
    @Column(name = "Telefone", length = 20)
    private String telefone;
    @Column(name = "Fax", length = 20)
    private String fax;
    @Temporal(javax.persistence.TemporalType.TIMESTAMP)
    @Column(name = "Data_cadastro", nullable = false)
    private Date dataCadastro;
    @Temporal(javax.persistence.TemporalType.TIMESTAMP)
    @Column(name = "Data_alteracao")
    private Date dataAlteracao;
    @Column(name = "Usu_cadastro")
    private Long idUsuarioCadastro;
    @Column(name = "Usu_alteracao")
    private Long idUsuarioAlteracao;
    @ManyToOne
    @JoinColumn(name = "id_Cidade")
    private Cidade cidade;

    public Cartorio() {
    }

    public Cartorio(Long id) {
	this.id = id;
    }

    public Long getId() {
	return id;
    }

    public void setId(Long id) {
	this.id = id;
    }

    public Long getIdUsuarioAlteracao() {
	return idUsuarioAlteracao;
    }

    public void setIdUsuarioAlteracao(Long idUsuarioAlteracao) {
	this.idUsuarioAlteracao = idUsuarioAlteracao;
    }

    public Long getIdUsuarioCadastro() {
	return idUsuarioCadastro;
    }

    public void setIdUsuarioCadastro(Long idUsuarioCadastro) {
	this.idUsuarioCadastro = idUsuarioCadastro;
    }

    public String getBairro() {
	return bairro;
    }

    public void setBairro(String bairro) {
	this.bairro = bairro;
    }

    public String getContato() {
	return contato;
    }

    public void setContato(String contato) {
	this.contato = contato;
    }

    public String getEndereco() {
	return endereco;
    }

    public void setEndereco(String endereco) {
	this.endereco = endereco;
    }

    public String getFax() {
	return fax;
    }

    public void setFax(String fax) {
	this.fax = fax;
    }

    public String getNome() {
	return nome;
    }

    public void setNome(String nome) {
	this.nome = nome;
    }

    public String getTelefone() {
	return telefone;
    }

    public void setTelefone(String telefone) {
	this.telefone = telefone;
    }

    public Date getDataAlteracao() {
	return dataAlteracao;
    }

    public void setDataAlteracao(Date dataAlteracao) {
	this.dataAlteracao = dataAlteracao;
    }

    public Date getDataCadastro() {
	return dataCadastro;
    }

    public void setDataCadastro(Date dataCadastro) {
	this.dataCadastro = dataCadastro;
    }

    public void setIdCidade(Long idCidade) {
	if (idCidade == null) {
	    setCidade(null);
	} else {
	    setCidade(new Cidade(idCidade));
	}
    }
    
    public Long getIdCidade(){
	return getCidade() != null ? getCidade().getId() : null;
    }

    public Cidade getCidade() {
	return cidade;
    }

    public void setCidade(Cidade cidade) {
	this.cidade = cidade;
    }

    @Override
    public boolean equals(Object obj) {
	return genericEquals(obj);
    }

    @Override
    public int hashCode() {
	int hash = 3;
	hash = 61 * hash + (this.id != null ? this.id.hashCode() : 0);
	return hash;
    }
}
